/**
 * 
 */
package com.wubo.sec.core;

import java.util.Date;
import java.util.Set;

import org.springframework.security.core.userdetails.UserDetails;

import com.wubo.sec.model.Authority;
import com.wubo.sec.model.Group;

/** 用户接口
 * @author wubo
 * @CreateDate 2010-8-19
 * @version 1.0.01
 */
public interface UserData extends UserDetails {
	/**
	 * 返回用户登录次数
	 * @return
	 */
	int getLoginTimes();
	
	/**
	 * 设置上次登录时间
	 * @param lastLoginTime
	 */
	void setLastLoginTime(Date lastLoginTime);
	
	/**
	 * 返回用户上次登录时间
	 * @return
	 */
	Date getLastLoginTime();
	
	/**
	 * 返回用户上次登录时间显示文本
	 * @return
	 */
	String getLastLoginTimeText();
	
	/**
	 * 返回用户上次登录IP
	 * @return
	 */
	String getLastLoginIP();
	
	/**
	 * 返回用户电子邮箱
	 * @return 
	 */
	String getEmail();
	
	/**
	 * 返回用户显示名
	 * @return
	 */
	String getUserText();
	
	/**
	 * 得到所属组
	 * @return
	 */
	Group getGroup();
	/**
	 * 分配用户组
	 * @param group
	 */
	void setGroup(Group group);
	
	/**
	 * 得到拥有角色
	 * @return
	 */
	Set<? extends RoleData> getRoles();
	/**
	 * 分配角色
	 * @param roles
	 */
	void setRoles(Set<? extends RoleData> roles);
	
	/**
	 * 得到用户所有权限
	 * @return
	 */
	Set<Authority> getAllAuthorities();
	/**
	 * 分配权限
	 * @param authorities
	 */
	void setUserAuthorities(Set<Authority> authorities);
}
